package classpath

import (
	"fmt"
	"os"
	"path/filepath"
	"strings"
)

// 根据通配符查找
func newWildcardEntry(path string) CompositeEntry {
	// 去掉最后一个通配符*号
	baseDir := path[:len(path)-1]
	c := []Entry{}
	walkFn := func(path string, info os.FileInfo, err error) error {
		// 存在错误直接返回
		if err != nil {
			return err
		}
		// 此文件是一个文件夹，并且所在路径不是我们要搜索的基路径
		if info.IsDir() && path != baseDir {
			// 直接跳过，不匹配子目录
			return filepath.SkipDir
		}
		// 此文件是一个jar包，新建一个压缩节点，到时候从压缩包中查找类
		if strings.HasSuffix(path, ".jar") || strings.HasSuffix(path, ".JAR") {
			jarEntry := newZipEntry(path)
			c = append(c, jarEntry)
		}
		// 只考虑从jar包中查找文件，java应用要打成jar包运行
		return nil
	}
	// 遍历指定文件夹，为每个文件调用此方法
	filepath.Walk(baseDir, walkFn)
	fmt.Println("路径["+path+"]下找到文件")
	for _, aPathEntry := range c {
		fmt.Println(aPathEntry.String())
	}
	return c
}
